﻿//using system;
//using system.collections.generic;
//using system.linq;
//using mailmarketing.models;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MailMarketing.Models.Entity;
using MailMarketing.ViewModel;

namespace MailMarketing.Models.Repositorio
{
    public class RepositorioClientes:Repositorio
    {
        public RepositorioClientes() : base()
        {
        }

        /// <summary>
        /// Obtem lista de clientes
        /// </summary>
        /// <returns></returns>
        public List<Cliente> todos()
        {
            return objEntities.Clientes.OrderBy(c => c.Nome).ToList();
        }

        /// <summary>
        /// Retorna objeto cliente pelo Id
        /// </summary>
        /// <param name="id">id do cliente</param>
        /// <returns>Objeto cliente ou null caso não encontre</returns>
        public Cliente obterPorId(int id)
        {
            Cliente objCliente = null;
            try
            {
                objCliente = objEntities.Clientes.Single(c => c.ClienteId == id);
            }
            catch(Exception)
            {
            }
            return objCliente;                 
        }

        /// <summary>
        /// Salva uma cliente na base de dados
        /// </summary>
        /// <param name="objCliente">objeto a ser salvo</param>
        /// <returns>verdadeiro caso tenha realizado a operação com sucesso!</returns>
        public bool incluir(Cliente objCliente)
        {
            bool incluido;
            try
            {
                this.objEntities.AddToClientes(objCliente);
                this.salvar();
                incluido = true;
            }
            catch(Exception ex)
            {
                throw new Exception("Falha ao incluir Cliente \n" + ex.Message);
            }
            return incluido;
        }
       
        /// <summary>
        /// Exclui cliente pelo id
        /// </summary>
        /// <param name="id">id do cliente</param>
        public void excluir(int id)
        {
            Cliente objCliente = this.obterPorId(id);
            this.objEntities.Clientes.DeleteObject(objCliente);
            this.salvar();
        }
    }
}